package com.gxa.boot.common;

import lombok.Data;

@Data
public class R<T> {

    private Integer code;
    private String msg;
    private T data;

    /**
     * 只返回固定的状态(200)和信息(success)
     * @return
     * @param <T>
     */
    public static <T> R<T> success(){
        R<T> r = new R<>();
        r.setCode(200);
        r.setMsg("success");
        return r;
    }

    /**
     * 只返回固定的状态(200)和定制信息
     * @param message 定制的信息
     * @return
     * @param <T>
     */
    public static <T> R<T> success(String message){
        R<T> r = new R<>();
        r.setCode(200);
        r.setMsg(message);
        return r;
    }

    /**
     * 返回数据
     * @param data
     * @return
     * @param <T>
     */
    public static <T> R<T> success(T data){
        R<T> r = new R<>();
        r.setCode(200);
        r.setMsg("success");
        r.setData(data);
        return r;
    }

    /**
     * 只返回固定的状态(500)和信息(failed)
     * @return
     * @param <T>
     */
    public static <T> R<T> failed(){
        R<T> r = new R<>();
        r.setCode(500);
        r.setMsg("failed");
        return r;
    }

    /**
     * 只返回固定的状态(500)和定制信息
     * @return
     * @param <T>
     */
    public static <T> R<T> failed(String message){
        R<T> r = new R<>();
        r.setCode(500);
        r.setMsg(message);
        return r;
    }


    /**
     *
     * @param code 状态码
     * @param message 异常消息
     * @return
     * @param <T>
     */
    public static <T> R<T> failed(Integer code ,String message){
        R<T> r = new R<>();
        r.setCode(code);
        r.setMsg(message);
        return r;
    }

}
